package com.dst.note.utils;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v4.content.ContextCompat;

import com.dst.note.R;
import com.yuyh.library.imgsel.ISNav;
import com.yuyh.library.imgsel.config.ISCameraConfig;
import com.yuyh.library.imgsel.config.ISListConfig;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Copyright (C), 2020, nqyw
 * FileName: tgl
 * Author: 10496
 * Date: 2020/8/13 0:24
 * Description:
 * History:
 */
public class PhotoUtils {
    private static final long IMG_SIZE = 1024 * 1024 * 3;

    public static void openCamera(Context context, int requestCode) {
        ISCameraConfig config = new ISCameraConfig.Builder()
                .needCrop(false) // 裁剪
                .build();
        ISNav.getInstance().toCameraActivity(context, config, requestCode);
    }

    public static void openAlbum(Context context, int requestCode) {
        // 自由配置选项
        ISListConfig config = new ISListConfig.Builder()
                // 是否多选, 默认true
                .multiSelect(false)
                // 是否记住上次选中记录, 仅当multiSelect为true的时候配置，默认为true
                .rememberSelected(false)
                // “确定”按钮背景色
                .btnBgColor(ContextCompat.getColor(context, R.color.c_main_title_bg))
                // “确定”按钮文字颜色
                .btnTextColor(ContextCompat.getColor(context, R.color.font_white))
                // 使用沉浸式状态栏
                .statusBarColor(ContextCompat.getColor(context, R.color.c_main_title_bg))
                // 返回图标ResId
                .backResId(R.drawable.ic_back)
                // 标题
                .title("选择图片")
                // TitleBar背景色
                .titleBgColor(ContextCompat.getColor(context, R.color.c_main_title_bg))
                // 裁剪大小。needCrop为true的时候配置
                .cropSize(1, 1, 400, 400)
                .needCrop(false)
                // 第一个是否显示相机，默认true
                .needCamera(false)
                // 最大选择图片数量，默认9
                .maxNum(1)
                .build();
        // 跳转到图片选择器
        ISNav.getInstance().toListActivity(context, config, requestCode);
    }

    /**
     * 质量压缩方法
     *
     * @return
     */
    public static String compressImage(Context context, String path) {
        String newPath = FileUtils.getDiskCacheDir(context) + "/" + path.hashCode() + ".jpg";
        File newFile = new File(newPath);
        if (newFile.exists() && newFile.isFile() && newFile.canRead() && newFile.length() > 0) {
            return newPath;
        }
        Bitmap bitmap = BitmapFactory.decodeFile(path);
        FileOutputStream fileOutputStream = null;
        try {
            fileOutputStream = new FileOutputStream(newFile);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fileOutputStream);
            int options = 90;
            while (newFile.length() / 1024 > IMG_SIZE) {
                options -= 10;
                if (options > 0) {
                    bitmap.compress(Bitmap.CompressFormat.JPEG, options, fileOutputStream);
                    try {
                        fileOutputStream.flush();
                    } catch (IOException e) {
                        e.printStackTrace();
                        return null;
                    }
                }
            }
            try {
                fileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            return null;
        } finally {
            if (fileOutputStream != null) {
                try {
                    fileOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                    return null;
                }
            }
        }
        if (bitmap != null && bitmap.isRecycled()) {
            bitmap.recycle();
        }
        return newPath;
    }

    /**
     * 是否图片
     *
     * @return
     */
    public static boolean isImage(String text) {
        int point = text.lastIndexOf(".");
        if (point > 0) {
            String houZhui = text.substring(point);
            String type = ".bmp, .jpg, .png, .tif, .gif, .pcx," +
                    ".tga, .exif, .fpx, .svg, .psd, .cdr, .pcd, .dxf, .ufo, .eps, .ai, .raw, .WMF, .webp";
            return type.contains(houZhui);
        }
        return false;
    }
}
